Cet article traite de l'installation et de la configuration d'un serveur web/php couplé à un serveur SQL sous environnement Microsoft Windows 2K/XP.
Pré-requis : Il est évident que pour faire un site dynamique en PHP, il est indispensable de connaitre le HTML auparavant !
Nous allons nous servir d'EasyPHP, qui est un logiciel regroupant Apache, PHP et MySQL. Il permet une installation et une utilisation facile de ces serveurs de façon à pouvoir tester des pages sans trop de problèmes de configuration.
Si vous ne désirez pas utiliser EasyPHP, sachez qu'il existe d'autres solutions relativement semblables : MonServeur, WAMPserveur, AppServ,..
La dernière version est la 1.7 1.8 ; elle regroupe :
Vous pouvez la télécharger là, c'est un programme gratuit (comme tous ses composants d'ailleurs).
Avant de continuer, je tiens à préciser que EasyPHP a été concu pour être une plate-forme de développement et non une solution d'hébergement professionnelle.
Lancez l'installation, et installez tout par défaut.
Lancez easyphp.exe, un icône se met dans la barre des taches. Si vous voyez un rond rouge qui clignote, ca marche ! Sinon faites un clique droit dessus/démarrer (il faut parfois répéter cette opération plusieurs fois avant que ca marche :/)
Vous pouvez par ailleurs vérifier que les processus apache et mysqld sont bien lancés en faisant un "ctrl alt suppr" et en allant dans l'onglet processus.
Allez dans C:\Program files\EasyPHP1.7\ : c'est le répertoire d'installation par défaut. Voici les différents répertoires présents :
- apache : contient l'installation du serveur web
- cgi-bin : normalement il ne contient pas de fichier
- home : votre répertoire qui contient des fichiers d'aide, ainsi que le fichier index.php qui vous permet de configurer graphiquement quelques paramètres d'Apache (que nous verrons plus tard)
- mysql : contient le serveur MySQL
- php : contient le serveur PHP (l'add-on qui permet à Apache d'interpréter les fichiers PHP)
- phpmyadmin : contient des pages de scripts permettant de gèrer la base MySQL
- safe : contient une sauveguarde des fichiers de configuration par défaut (à garder précieusement en cas de problème !)
- tmp : répertoire temporaire du serveur Apache (contient par exemple les fichier temporaires des sessions)
- www : c'est ici le répertoire racine de votre site (par défaut). C'est donc ici qu'il faudra mettre vos fichier ".php".
<?php phpinfo(); ?>
Nommez ce fichier test.php et placez-le dans C:\Program files\EasyPHP\www\.
Vous pouvez maintenant lancer votre navigateur et taper l'addresse "http://localhost/test.php" ("localhost" désigne votre ordinateur en local ; cela équivaut à l'IP 127.0.0.1). Si pleins d'infos s'affichent, ça marche et ça vaut mieux parce que sinon il va falloir consulter la FAQ officielle !
Vous pouvez arrêter là la manipulation d'EasyPHP pour vous consacrer entièrement à votre site, ou alors lire cet article jusqu'au bout :)
Epatant ! Alors voyons la suite !
Tapez http://localhost/home/ dans votre navigateur préféré.
Vous tombez sur le fichier "index.php" (fichier lu par défaut par Apache quand on lui indique un répertoire) du répertoire "home" que je vous ai brièvement décrit tout à l'heure. Elle vous permet de :
- créer un alias = permettre au serveur Apache d'accéder à un répertoire comme s'il était dans www/
- administrez vos bases de données : ce lien lance phpmyadmin qui est un ensemble de scripts (écris en PHP !) pour gérer vos bases MySQL ; je ne vous parlerait pas de son utilisation ici car il est très intuitif.
- consulter l'environnement EasyPHP : quelques informations sur la configuration de votre serveur.
Bien sur il est possible de modifier tout cela autrement qu'en passant par cette section d'administration : c'est ce que nous allons voir maintenant.
Chaque composant d'EasyPHP a un fichier de configuration spécifique.
- Apache : httpd.conf se situe "C:\Program Files\EasyPHP\apache\conf\"
- MySQL : my.ini se situe dans le répertoire d'installation de Windows ("C:\WINNT\" ou "C:\WINDOWS\")
- PHP : php.ini se situe dans "C:\Program Files\EasyPHP\apache\" ou dans le répertoire d'installation de Windows
NB : dans tous les fichiers suivant, les commentaires sont précédés d'un dièze (#) ATTENTION : il redémarrer les serveurs pour qu'ils prennent en compte la nouvelle configuration (clic droit sur l'icône d'EasyPHP situé dans la barre des taches/Redémarrer)
les principaux paramètres de httpd.conf :
- Port 80 : c'est le port d'écoute de Apache. Par défaut il est à 80. Je ne vous conseille pas de le changer, à moins d'avoir une bonne raison de le faire. Si vous vouliez cependant le modifier (à cause d'un conflit de port par ex), vous accèderiez à vos pages à l'adresse suivante : "http://localhost:port/ma_page.php"
- ServerAdmin admin@localhost : contient le mail de l'administratur de votre site
- ServerName localhost : contient le nom de domaine de votre site
- DocumentRoot "C:/Program Files/EasyPHP/www" : désigne la racine du serveur web, càd le répertoire contenant vos fichier html et php.
- <Directory "C:/Program Files/EasyPHP/www"> : quelques lignes plus bas, il faut mettre le même chemin que votre "DocumentRoot".
- <VirtualHost *> vers la fin du fichier, permet de spécifier des "virtual host" c'est à dire des "sous-sites" auxquels vous accèderez par l'url "http://example.localhost/"
- Alias : les alias vous permettent d'accèdez à un répertoire par l'addresse "http://localhost/mon_rep/", comme s'il était situé dans la racine du serveur web. Inspirez vous des alias déjà existant, et veillez aux droits d'accès ("allow from all" pour être visible par tous).
Pour aller plus loin :
Gestion des droits
Il est possible de limiter l'accès à votre serveur web de 2 manières :- globale : la gestion des accès se fait à partir des règles situées dans le fichier de configuration de Apache (httpd.conf)
- locale : la gestion des accès se fait de manière indépendante dans chaque répertoire. Les règles sont situées dans le fichier .htaccess.
Voici un exemple d'accès restreint au répertoire /prive :
- dans le fichier httpd.conf :
<Location "/prive"> Options None AllowOverride None AuthName "accès restreint" AuthType Basic AuthUserFile "/chemin_absolu/.htpasswd" require valid-user </Location>
- dans le fichier .htaccess situé dans /prive :
AuthName "accès restreint" AuthType Basic AuthUserFile "/chemin_absolu/.htpasswd" require valid-user
Options : Peut important dans notre cas
AllowOverride : Permet de désactiver l'utilisation des .htaccess
Vous remarquerez qu'il y a des directives communes !
AuthName : Définit le message à afficher à l'internaute quand il arrivera dans le dossier.
AuthType : Définit le mode d'encryption
AuthUserFile : Définit le fichier contenant les logins/pass
Require : Définit quelles personnes/groupes ont une permission d'accès
Maintenant, il vous faut créer le fichier .htpasswd qui va contenir les login/pass des utilisateurs valides.
Pour cela, on va se servir d'un programme situé dans ../apache/bin/ nommé htpasswd. Ouvrez une console et aller dans le répertoire, puis tapez : htpasswd nom_du_fichier login (avec l'option "-c" si le fichier n'existe pas)
Le programme vous demandera d'entrer un mot de passe et de le confirmer, puis ajoutera l'utilisateur dans le fichier spécifié (qu'il faut nommé et mettre dans le répertoire que vous avez spécifié plus haut).
divers..
Personnaliser sa page d'erreur 404 : C'est la page qui s'affiche par défaut lorsqu'on demande au serveur web une page qu'il ne trouve pas. Pour afficher une autre page à la place, modifier votre .htaccess en rajoutant cette ligne : ErrorDocument 404 /new_404_page.php.
Pour permettre à chaque utilisateur de faire des pages web accessible via http://server/~user/ il faut activer le module userdir, et décommenter ces lignes :
# UserDir is now a module UserDir public_html UserDir disabled rootA ce moment tout document situé dans le dossier ~/public_html/ de la home d'un utilisateur sera accessible depuis le web.AllowOverride FileInfo AuthConfig Limit Options Indexes SymLinksIfOwnerMatch IncludesNoExec